package my.mark.mybaibaoxiang.twotiger.contract;

import com.twotiger.util.PathUtil;
import my.mark.mybaibaoxiang.twotiger.contract.utils.ContractPdfKit;
import my.mark.mybaibaoxiang.twotiger.contract.utils.DrawSealUtils;
import my.mark.mybaibaoxiang.twotiger.contract.utils.ShuiYin;
import org.apache.log4j.Logger;

import java.io.*;
import java.util.HashMap;
import java.util.Map;

/**
 * @author wxming.
 * @Description TODO.自动制作一个合同示例
 * @date 2020-12-1.
 */
public class makeContract {
    private static final Logger LOG = Logger.getLogger(makeContract.class);

    /**
     * 生成合同pdf
     * TODO 关键方法 ("ht_pc_bond_stock.ftl", contractNo, params)
     * @param view 模板文件名
     * @param filename 合同编号
     * @param model 要填充的数据
     * @return
     */
    private static String creatContractPDF(String view, String filename, Map<String, Object> model) {

        String contractPath = null;
        String temp = "";
        InputStream pdf = null;
        try {
            temp = ContractPdfKit.fillPDFData(view, model);//填充数据，返回临时文件全路径。
            LOG.debug("合同数据填充成功！");
            //获取用户签名数据

            //读取填充数据后的临时pdf文件到文件流
            pdf = new FileInputStream(temp);

            //给文件流加水印
            pdf = ShuiYin.customerExport(pdf);
            //将文件流传给第三方加电子签章，再返回一个pdf文件的文件流。

            //通过文件流将文件上传 ：Oss上传后的地址  contractPath
            //contractPath = OssUtils.sendPdfToOSS(pdf, filename);
            String relativePath = PathUtil.generateRelativePath("src\\main\\java\\my\\mark\\mybaibaoxiang\\twotiger\\contract", filename + ".pdf");
            DrawSealUtils.writeToLocal(relativePath,pdf);

        } catch (Exception e) {
            LOG.error("PDF合同生成失败", e);
        } finally {
            //删除临时文件
            if (!temp.equals("")) {
                File delFile = new File(temp);
                if (delFile.exists()) {
                    delFile.delete();
                }
            }
            if (pdf != null) {
                try {
                    pdf.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return contractPath;
    }

    public static void main(String[] args){
        Map<String, Object> params = new HashMap<>();
        params.put("aaa","啊啊啊");
        params.put("bbb","不不不");
        //String contractPath = creatContractPDF("fwb2.ftl", "合同名", params);
        String contractPath = creatContractPDF("ftl1.ftl", "合同名", params);
        System.out.println(contractPath);
    }
}
